Subject: RFC editor comments

From: Lakshman Garikapaty <[email-masked]>
Date: Wed, 27 Jul 94 15:10:22 EDT

Hi,

  Please find my comments to the RFC. I tried to change those areas that i
found difficult to understand. Use your judgement and if you feel the changes
are appropriate you can update them.

 Thanks.

 Lakshman.



Section 3 Page 9 

>3. Transport Connection

>   Data Link Switches can be in used in pairs or by themselves.  A Single DLS
>   internally switches one data link to another without using TCP (DLC(1) to
>   DLC(2) in the figure below).  
 
   Data Link Switch can be used in pairs (inter) or by themselves (intra).
A single DLSw can internally switch one data link to another without using
TCP (DLC(1) to DLC(2) as shown in the figure below). This RFC does not
go into details on how to implement this feature and is left to individual
vendor to design. It is not required to develop this intra switch 
capability feature.

> transport connection.  Within the transport connection is a specific set of
> DLS message units.  The message formats and types for these PDUs are documen
> in the following sections.

After the circuit is established between the two end DLSw, data messages are
sent using information message format. The control and 
information message formats are documented in the following sections.     

Section 3.1 

>   (EDITOR's Note: I ONLY COUNT 70 BYTES, IS 72 CORRECT AND DO I NEED TO SHOW
>   ADDITION RESERVED BYTES AT THE END???)
  
Yes we need to show 72 bytes with last 4 bytes as reserved. 

>  The Header Length is x'00 48', indicating a numeric value of 72 bytes.

 The Header Length is x'48' (indicating a numeric value of 72 bytes) for 
 Control message, x'0F' (indicating a numeric value of 16 bytes) for 
 Information message. 

>    Note:  The Remote Data Link Correlator and Remote DLC Port ID are set equal
>     to the Target Data Link Correlator and Target DLC Port ID if the Frame
>     Direction field is set to x'01', and are set equal to the Origin Data Link
>     Correlator and Origin DLC Port ID if the Direction Field is set to x'02'.

 Note: The value of Remote Data Link Correlator and Remote DLC Port ID in 
the control message are set based on the direction field. If the
direction filed is set to x'01' then the Target Data Link Correlator and 
Target DLC Port ID should match and if the Frame Direction field is set 
to x'02' then Origin Data Link Correlator and Origin DLC Port ID should 
match the Remote Data Link Correlator and Remote DLC Port ID respectively. 

Section 3.2 Page 12

>  An end-to-end circuit is identified by a pair of Circuit ID's.  A Circuit ID
>   a 64 bit number that identifies the DLC circuit within a single DLSw.  It

  An end-to-end circuit is identified by a pair of Circuit ID's.  A Circuit ID
  is a 8 byte number that identifies the DLC circuit within a single DLSw.  It

>   This value is unique in a single DLSw and is assigned locally.  The pair of
>   Circuit ID's along with the identifiers of the Data Link Switches, uniquely
>   identify a single end-to-end circuit.  Each DLSw must keep a table of these
 
   This value is unique in a single DLSw and is assigned locally.  The pair of
   Circuit IDs along with Data link IDs, uniquely identify a single end-to-end
   circuit. Each DLSw must keep a table of these

Page 13

> establishment of an end-to-end connection.  The CANUREACH_cs, ICANREACH, and
 
 establishment of an end-to-end connection.  The CANUREACH_cs, ICANREACH_cs, and
 
> ICANREACH message is returned to the origin DLS containing the Target Circui

 ICANREACH_cs message is returned to the origin DLS containing the Target Circui

Page 14, 15

>   significance only and the values received from a partner DLSw must not be
>   interpreted by the DLSw that receives them.

   significance only and the values received from a partner DLSw must not be
   interpreted by the DLSw that receives them and should be echoed as is to
   partner DLSw in subsequent messages.

> DLSw after the capabilities exchange and must be reflected to the partner DL
>  in every SSP control message.
   
  DLSw after the capabilities exchange and must be reflected to the partner DLSw
  in every SSP control message. ie. you store this value only once and send 
  this value in all subsequent control messages.

>  The Target Data Link Correlator, Target Port ID and Target Transport ID must
>   remain the same once the Target DLSw has sent the ICANREACH_cs for a given
>   circuit. The Origin DLSw must store the values specified in the ICANREACH_cs
>   and use these on all subsequent SSP messages for this circuit.

>   The Origin DLSw must allow these fields to vary until the ICANREACH_cs is
>   received.  Each SSP message issued for a circuit must reflect the values
>   specified by the Target DLSw in the last SSP message for this circuit receiv
>   by the Origin DLSw.  Binary zero should be used if no such message has yet b
>   received for a given circuit (apart from the Target Transport ID which will
>   have been learnt as specified above).

>   The Origin Data Link Correlator, Origin Port ID and Origin Transport ID must
>   remain the same once the Origin DLSw has issued the REACH_ACK for a given
>   circuit.  The Target DLSw must store the values specified in the REACH_ACK a
>   use these on all subsequent SSP messages for this circuit.

>   The Target DLSw must allow these fields to vary until the REACH_ACK is
>   received.  Each SSP message issued for a circuit must reflect the values
>   specified by the Origin DLSw in the last SSP message for this circuit receiv
>   by the Target DLSw.  Binary zero should be used if no such message has yet b
>   received for a given circuit (apart from the Origin Transport ID which will
>   have been learnt as specified above).

>   For the purposes of correlator exchange, explorer messages form a separate
>   circuit. Both DLSw partners must reflect the last received correlator values
>   as specified above.  However correlators learned on explorer messages need n
>   be carried over to a subsequent circuit setup attempt.  In particular, the
>   Origin DLSw may elect to use the same values for the Origin Data Link
>   Correlator and Origin Port ID when it issues a CANUREACH_cs after receiving 
>   ICANREACH_ex or NETBIOS_NR_ex.  However the Target DLSw must not assume that
>   the CANUREACH_cs will specify any of the Target Data Link Correlator or Targ
>   Port ID that were exchanged on the explorer frames.

   Some implementations might prefer to assign the Data Link Correlator after
the data link is started. For Origin DLSw this translates to processing an
ICANREACH_cs and for Targert DLSw is after a REACH_ACK is received. Your
implementation should be cognizant that Circuit ID value can change and 
reflect the Circuit ID as is until these above messages
are received and then you can store the Circuit ID and send them in all
subsequent DLSw messages. Once these messages are received the Circuit ID
value cannot be modified for the life time of the circuit.

>  The Origin DLSw "don't care" flag informs a Target DLSw that chooses to
>   reply to *_ex messages on the basis of cached information that it
>   may safely return a smaller LF Size on the ICR_cs frame if it has had to cho
>   an alternative route on which to initialize the circuit.  If this bit is set
>   1, the Origin DLSw takes responsibility to ensure that the end-stations
>   negotiate a suitable frame size for the circuit.  If this bit is set to 0, t
>   Target DLSw must not reply to the CUR_cs if it cannot obtain a route to the
>   Target end station that support an LF Size at least as large as that specifi
>   in the CUR_cs frame.
          
   If the Origin DLSw "don't care" flag value is 1 informs a Target DLSw that 
   chooses to reply to CANUREACH_ex message on the basis of cached 
   information that it may safely return a smaller LF Size on the 
   ICANREACH_ex frame if it has to choose a route which does not support
   the LF size requested. On the other hand if this bit is reset to 0, the
   Target DLSw must not reply to the CANUREACH_ex if it cannot obtain a 
   route to the Target end station that supports an LF Size at least as 
   large as that specified by the Origin DLSw in the CANUREACH_ex frame.
              
Section 4.1.1 Page 27

>  The two basic bringup flows from a pure FSM perspective are shown below.  The
 
   The two basic connect initiation flows from a pure FSM perspective 
   are shown below.  The
*** I did not like 'bringup' word. If you can choose another word it will
be good ********************* 

Page 48

***************************************************************************
I have problem with the state machine viz: The state m/c is receiving
*_ex messages but not sending them. I am not sure how/who will send them.
Also DLSw state machine should NOT worry about the data link layer commands ie.
whether UA is sent or not. It is the problem of DLC and let us not 
replicate the logic in DLSw.

I took the liberty to revamp the state machine which i think will work and
please review and pass comments keeping in mind as to who is sending
and who is receiving in what state.
*************************************************************************

State: DISCONNECTED

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
   3  | Receive CANUREACH_cs | DLC_START_DL        | RESOLVE_PENDING      |
      +----------------------+---------------------+----------------------+
   3  | Receive CANUREACH_ex | DLC_START_DL        | 			  |
      +----------------------+---------------------+----------------------+
   3  | Receive ICANREACH_cs | 			   | CIRCUIT_ESTABLISHED  | 
      |			     | Send REACH_ACK      |			  |
      |			     | DLC_RESOLVE_R	   |			  |
      +----------------------+---------------------+----------------------+
   3  | Receive ICANREACH_ex | Cancel Timer        | CIRCUIT_START	  |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
   3  | Receive NETBIOS_NQ_ex| DLC_DGRM            | RESOLVE_PENDING      |
      +----------------------+---------------------+----------------------+
   3  | Receive NETBIOS_NR_ex|      		   | CIRCUIT_START        |
      |                      | 			   |                      |
      +----------------------+---------------------+----------------------+
   3  | DLC_RESOLVE_C        | Send CANUREACH_ex   |                      |
      |			     |       or		   |			  |
      |			     | Send CANUREACH_cs   |			  |
      |			     | Start Timer         |			  |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | If NETBIOS          |                      |
      |                      | NAME_QUERY:         |                      |
   3  |                      |  Send NETBIOS_NQ_ex |                      |
      |                      | else:               |                      |
      |                      |  Send DATAFRAME     |                      |
      |			     | Start Timer	   |			  |
      +----------------------+---------------------+----------------------+
   3  | DLC_DL_STARTED       | Send ICANREACH_ex   | CIRCUIT_START        |
      +----------------------+---------------------+----------------------+
   3  | CS_TIMER_EXP         |                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        |                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+

State: RESOLVE_PENDING

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | DLC_DL_STARTED       | Send ICANREACH_cs   | CIRCUIT_PENDING      |
      +----------------------+---------------------+----------------------+
   3  | DLC_ERROR            | Send HALT_DL_NOACK  | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
   3  | DLC_DGRM             | Send DATAFRAME      |                      |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        |                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
 
State: CIRCUIT_START

   3
   3  +----------------------+---------------------+----------------------+
   3  |        Event         |      Action(s)      |      Next State      |
   3  +----------------------+---------------------+----------------------+
   3  | Receive CANUREACH_cs | Send ICANREACH_cs   | CIRCUIT_PENDING      |
   3  +----------------------+---------------------+----------------------+
   3  | Receive ICANREACH_cs | Send REACH_ACK      | CIRCUIT_ESTABLISHED  |
   3  +----------------------+---------------------+----------------------+
   3  | Receive DATAFRAME    | DLC_DGRM            |                      |
   3  +----------------------+---------------------+----------------------+
   3  | DLC_DGRM             | Send DATAFRAME      |                      |
   3  +----------------------+---------------------+----------------------+
   3  | DLC_RESOLVE_C	     | Send CANUREACH_cs   | 			  |
   3  +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        |                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
    
State: CIRCUIT_PENDING

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
      | Receive CONTACT      | DLC_CONTACT         | CONTACT_PENDING      |
      +----------------------+---------------------+----------------------+
      | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
      +----------------------+---------------------+----------------------+
   1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | Receive REACH_ACK    | If Connected:       | If Connected:        |
      |                      |  Send CONTACT       |  CONNECT_PENDING,    |
      |                      |                     | else:                |
      |                      |                     |  CIRCUIT_ESTABLISHED |
      +----------------------+---------------------+----------------------+
      | Receive XIDFRAME     | DLC_XID             |                      |
      +----------------------+---------------------+----------------------+
      | Receive DGRMFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | DLC_CONTACTED        | DLC_ENTER_BUSY      |                      |
      +----------------------+---------------------+----------------------+
      | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
      +----------------------+---------------------+----------------------+
      | DLC_XID              | Send XIDFRAME       |                      |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DGRMFRAME      |                      |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+

State: CONNECT_PENDING

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
   3  | Receive CONTACTED    |  DLC_EXIT_BUSY 	   | CONNECTED            |
      +----------------------+---------------------+----------------------+
      | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
      +----------------------+---------------------+----------------------+
   1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | Receive DGRMFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
   1  | Receive ICANREACH_cs | Send HALT_DL_NOACK  |                      |
      |			     | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
   1  | Receive NETBIOS_NR_cs| Send HALT_DL_NOACK  |                      |
      |			     | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | DLC_RESET            | Send RESTART_DL     | CIRCUIT_RESTART      |
      +----------------------+---------------------+----------------------+
      | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DGRMFRAME      |                      |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+

State: CIRCUIT_ESTABLISHED

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
      | Receive CONTACT      | DLC_CONTACT         | CONTACT_PENDING      |
      +----------------------+---------------------+----------------------+
      | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
      +----------------------+---------------------+----------------------+
   1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | Receive XIDFRAME     | DLC_XID             |                      |
      +----------------------+---------------------+----------------------+
      | Receive DGRMFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
   1  | Receive ICANREACH_cs | Send HALT_DL_NOACK  |                      |
      |			     | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
   1  | Receive NETBIOS_NR   | Send HALT_DL_NOACK  |                      |
      +----------------------+---------------------+----------------------+
      | DLC_CONTACTED        | Send CONTACT        | CONNECT_PENDING      |
   3  |                      |   DLC_ENTER_BUSY    |                      |
      +----------------------+---------------------+----------------------+
      | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DGRMFRAME      |                      |
      +----------------------+---------------------+----------------------+
      | DLC_XID              | Send XIDFRAME       |                      |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
 
State: CONTACT_PENDING

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
      | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
      +----------------------+---------------------+----------------------+
   1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | Receive RESTART_DL   | DLC_HALT_DL         | RESTART_PENDING      |
      +----------------------+---------------------+----------------------+
      | Receive DGRMFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | DLC_CONTACTED        | Send CONTACTED      | CONNECTED            |
      +----------------------+---------------------+----------------------+
      | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DGRMFRAME      |                      |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
 
State: CONNECTED

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
      | Receive HALT_DL      | DLC_HALT_DL         | HALT_PENDING         |
      +----------------------+---------------------+----------------------+
   1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | Receive RESTART_DL   | DLC_HALT_DL         | RESTART_PENDING      |
      +----------------------+---------------------+----------------------+
      | Receive DGRMFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | Receive INFOFRAME    | DLC_INFO            |                      |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
   3  | Receive XIDFRAME     |   DLC_XID           |                      |
   3  +----------------------+---------------------+----------------------+
   1  | Receive NETBIOS_NR   | Send HALT_DL_NOACK  |                      |
      +----------------------+---------------------+----------------------+
   1  | Receive ENTER_BUSY   | DLC_ENTER_BUSY      |                      |
      +----------------------+---------------------+----------------------+
   1  | Receive EXIT_BUSY    | DLC_EXIT_BUSY       |                      |
      +----------------------+---------------------+----------------------+
   1  | Rec TEST_CIRCUIT_REQ | Snd TEST_CIRCUIT_RSP|                      |
      +----------------------+---------------------+----------------------+
   1  | Receive ICANREACH_cs | Send HALT_DL_NOACK  |                      |
      |			     | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | DLC_RESET            | Send RESTART_DL     | CIRCUIT_RESTART      |
      +----------------------+---------------------+----------------------+
      | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DGRMFRAME      |                      |
      +----------------------+---------------------+----------------------+
      | DLC_INFO             | Send INFOFRAME      |                      |
      +----------------------+---------------------+----------------------+
   3  | DLC_XID              |   Send XIDFRAME     |                      |
   3  +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
       
State: CIRCUIT_RESTART

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
      | Receive DL_RESTARTED | If Connected:       | If Connected:        |
      |                      |  Send CONTACT       |  CONNECT_PENDING,    |
      |                      |                     | else:                |
      |                      |                     |  CIRCUIT_ESTABLISHED |
      +----------------------+---------------------+----------------------+
   1  | Receive HALT_DL_NOACK| DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DATAFRAME      |                      |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
         
State: DISCONNECT_PENDING

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
      | Receive DL_HALTED    |                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
      | Receive HALT_DL      | Send DL_HALTED      |                      |
      +----------------------+---------------------+----------------------+
   1  | Receive HALT_DL_NOACK|                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DATAFRAME      |                      |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        |                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+

State: RESTART_PENDING

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
   1  | Receive HALT_DL_NOACK|                     | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | DLC_DL_HALTED        | Send DL_RESTARTED   | CIRCUIT_ESTABLISHED  |
      +----------------------+---------------------+----------------------+
      | DLC_ERROR            | Send HALT_DL        | DISCONNECT_PENDING   |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DATAFRAME      |                      |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+

State: HALT_PENDING

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
   1  | Receive HALT_DL_NOACK|                     | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | DLC_DL_HALTED        | Send DL_HALTED      | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
      | DLC_ERROR            | Send DL_HALTED      | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DATAFRAME      |                      |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+

State: HALT_PENDING_NOACK

   1  +----------------------+---------------------+----------------------+
   1  |        Event         |      Action(s)      |      Next State      |
   1  +----------------------+---------------------+----------------------+
   1  | Receive DATAFRAME    | DLC_DGRM            |                      |
   1  +----------------------+---------------------+----------------------+
   1  | DLC_DL_HALTED        |                     | DISCONNECTED         |
   1  +----------------------+---------------------+----------------------+
   1  | DLC_ERROR            |                     | DISCONNECTED         |
   1  +----------------------+---------------------+----------------------+
   1  | DLC_DGRM             | Send DATAFRAME      |                      |
   1  +----------------------+---------------------+----------------------+

---

From: Lakshman Garikapaty <[email-masked]>
Date: Thu, 28 Jul 94 15:43:43 EDT

Hi,

  I have left out Netbios exchange in my previous state table. The updated
state tables follow:



State: DISCONNECTED

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
   3  | Receive CANUREACH_cs | DLC_START_DL        | RESOLVE_PENDING      |
      +----------------------+---------------------+----------------------+
   3  | Receive CANUREACH_ex | DLC_START_DL        |                      |
      +----------------------+---------------------+----------------------+
   3  | Receive ICANREACH_cs | Cancel Timer        | CIRCUIT_ESTABLISHED  |
      |                      | Send REACH_ACK      |                      |
      |                      | DLC_RESOLVE_R       |                      |
      +----------------------+---------------------+----------------------+
   3  | Receive ICANREACH_ex | Cancel Timer        | CIRCUIT_START        |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
   3  | Receive NETBIOS_NQ_cs| DLC_DGRM            | RESOLVE_PENDING      |
      +----------------------+---------------------+----------------------+
   3  | Receive NETBIOS_NQ_ex| DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
   3  | Receive NETBIOS_NR_cs| Cancel Timer        | CIRCUIT_ESTABLISHED  |
      |                      | Send REACH_ACK      |                      |
      |                      | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
   3  | Receive NETBIOS_NR_ex| Cancel Timer        | CIRCUIT_START        |
      +----------------------+---------------------+----------------------+
   3  | DLC_RESOLVE_C        | Send CANUREACH_ex   |                      |
      |                      |       or            |                      |
      |                      | Send CANUREACH_cs   |                      |
      |                      | Start Timer         |                      |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | If NETBIOS          |                      |
      |                      | NAME_QUERY:         |                      |
   3  |                      |  Send NETBIOS_NQ_ex |                      |
      |                      |       or            |                      |
      |                      |  Send NETBIOS_NQ_cs |                      |
      |                      |  Start Timer        |                      |
      |                      | else:               |                      |
      |                      |  If NETBIOS_NR:     | If NETBIOS_NR:       |
      |                      |  Send NETBIOS_NR_ex |   CIRCUIT_START      |
      |                      | else:               |                      |
      |                      |  Send DATAFRAME     |                      |
      +----------------------+---------------------+----------------------+
   3  | DLC_DL_STARTED       | Send ICANREACH_ex   | CIRCUIT_START        |
      +----------------------+---------------------+----------------------+
   3  | CS_TIMER_EXP         |                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        |                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+

State: RESOLVE_PENDING

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | DLC_DL_STARTED       | Send ICANREACH_cs   | CIRCUIT_PENDING      |
      +----------------------+---------------------+----------------------+
   3  | DLC_ERROR            | Send HALT_DL_NOACK  | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
   3  | DLC_DGRM             | If NETBIOS_NR:      | If NETBIOS_NR:       |
      |                      |   Send NETBIOS_NR_cs|   CIRCUIT_PENDING    |
      |                      | else:               |                      |
      |                      |   Send DATAFRAME    |                      |
      +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        |                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+

State: CIRCUIT_START

   3
   3  +----------------------+---------------------+----------------------+
   3  |        Event         |      Action(s)      |      Next State      |
   3  +----------------------+---------------------+----------------------+
   3  | Receive CANUREACH_cs | Send ICANREACH_cs   | CIRCUIT_PENDING      |
   3  +----------------------+---------------------+----------------------+
   3  | Receive ICANREACH_cs | Send REACH_ACK      | CIRCUIT_ESTABLISHED  |
   3  |                      | DLC_RESOLVE_R       |
   3  +----------------------+---------------------+----------------------+
   3  | Receive DATAFRAME    | If NETBIOS_NR:      | If NETBIOS_NR:       |
   3  |                      |   Send REACH_ACK    |   CIRCUIT_ESTABLISHED|
   3  |                      | DLC_DGRM            |                      |
   3  +----------------------+---------------------+----------------------+
   3  | DLC_DGRM             | If NETBIOS_NR:      | If NETBIOS_NR:       |
   3  |                      |   Send NETBIOS_NR_cs|   CIRCUIT_PENDING    |
   3  |                      | else:               |                      |
   3  |                      |   Send DATAFRAME    |                      |
   3  +----------------------+---------------------+----------------------+
   3  | DLC_RESOLVE_C        | Send CANUREACH_cs   |                      |
   3  +----------------------+---------------------+----------------------+
   3  | XPORT_FAILURE        |                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+

State: CIRCUIT_PENDING

      |                      |  Send CONTACT       |  CONNECT_PENDING     |

State: CONNECT_PENDING

State: CONTACT_PENDING

State: CONNECTED

   3  | Receive ICANREACH_cs | Send HALT_DL_NOACK  |                      |
   3  | Receive NETBIOS_NR_cs| Send HALT_DL_NOACK  |                      |

State: CIRCUIT_RESTART

State: RESTART_PENDING

   3  | XPORT_FAILURE        |                     | HALT_PENDING_NOACK   |

State: HALT_PENDING

   3  | XPORT_FAILURE        |                     | HALT_PENDING_NOACK   |

   3  | XPORT_FAILURE        |                     |                      |